数学建模之MATLAB编程

您所在的位置:网站首页 pan baidu compan baidu 数学建模之MATLAB编程

数学建模之MATLAB编程

2023-03-26 21:21| 来源: 网络整理| 查看: 265

EverydayOneCat

🌈 🐱🐱🐱 🍣🍣🍣🍣🍣✖️N 🌈📖📜 🥢 🐱 🐱 「Sushi shop!」

67bbec0a531da3ff74b14c44afdc76546eb7a131 知识点 1.下载

链接:https://pan.baidu.com/s/1DbfysOOwIoSvt8HQUw0jhw 提取码:75mz

2.基本数学运算 2.1变量与数据操作

变量定义注意事项:

变量名区分字母大小写变量名必须以字母开头,之后可以是任意字母、数字或下划线MATLAB语言将所识别的一切变量视为局部变量,若要将变量定义为全局变量,则应当对变量进行说明,即在该变量前加关键字global.

特殊变量表:

特殊变量取值ans用于结果的缺省变量名pi圆周率eps计算机的最小数flops浮点运算数inf无穷大 如1/0nan不等量 如0/0i ji=j=虚数单位nargin函数的输入变量数目nargout函数的输出变量数目realmin最小的可用正实数realmax最大的可用正实数 2.2MATLAB常用数学函数

MATLAB 提供了许多数学函数,函数的自变量规定为矩阵变量,运算法则是将函数逐项作用于矩阵的元素上,因而运算的结果是一个与自变量同维数的矩阵。

1.基本数学函数:

abs(x):纯量的绝对值或向量的长度

angle(z):复数z的相角**(Phase angle) sqrt(x):开平方 real(z):复数z**的实部

imag(z):复数z的虚部

conj(z):复数z的共轭复数

round(x):四舍五入至最近整数

fix(x):无论正负,舍去小数至最近整数

floor(x):地板函数,即舍去正小数至最近整数

ceil(x):天花板函数,即加入正小数至最近整数

rat(x):将实数x化为分数表示

rats(x):将实数x化为多项分数展开

rem(x,y):求x除以y的余数

gcd(x,y):整数x和y的最大公因数

lcm(x,y):整数x和y的最小公倍数

exp(x):自然指数

pow2(x):2的指数

log(x):以e为底的对数,即自然对数

log2(x):以2为底的对数

log10(x):以10为底的对数

sign(x):符号函数 (Signum function).

2.三角函数:

sin(x):正弦函数 cos(x):余弦函数

tan(x):正切函数 asin(x):反正弦函数

acos(x):反余弦函数 atan(x):反正切函数

atan2(x,y):四象限的反正切函数 sinh(x):超越正弦函数

cosh(x):超越余弦函数 tanh(x):超越正切函数

asinh(x):反超越正弦函数 acosh(x):反超越余弦函数atanh(x):反超越正切函数

3.适用于向量的常用函数:

min(x): 向量x的元素的最小值 max(x): 向量x的元素的最大值

mean(x): 向量x的元素的平均值 median(x): 向量x的元素的中位数

std(x): 向量x的元素的标准差 diff(x): 向量x的相邻元素的差

sort(x): 对向量x的元素进行排序(Sorting) length(x): 向量x的元素个数

norm(x): 向量x的欧氏长度 sum(x): 向量x的元素总和

prod(x): 向量x的元素总乘积 cumsum(x): 向量x的累计元素总和

cumprod(x): 向量x的累计元素总乘积 dot(x, y): 向量x和y的内积

cross(x, y): 向量x和y的外积

+++

例:随机抽取10 名学生的高等数学课程成绩,并统计他们中的最高分、最低分以及他们的平均成绩。

>> math=[88,90,77,69,92,80,74,66,95,85]; %产生10维向量 mathaver=sum(math)/10 %计算平均成绩 h=max(math) %求出最高分 l=min(math) %求出最低分 2.3MATLAB矩阵

矩阵的建立:

(1)直接输入法——A=[1 2 3;4 5 6;7 8 9]

矩阵同行元素之间由空格或逗号分隔,行与行之间用分号或回车键分隔;若“[ ]”中无元素表示空矩阵.

(2)利用冒号和函数——函数linspace(a,b,n)产生第一个元素为a,最后一个元素为b总数为n的行向量

>> a=1:0.5:4 % 格式是初始值:步长:终止值 a= Columns 1 through 7 1 1.5 2 2.5 3 3.5 4

(3)矩阵合并

>> B=[1 1 1] B = 1 1 1 >> C=[A;B] %分号增加行 C = 1 2 3 4 5 6 7 8 9 1 1 1 >> D=[A,B'] %逗号增加列 D = 1 2 3 1 4 5 6 1 7 8 9 1

矩阵的截取:

(1) 矩阵元素

>> A(2,3) %下标引用 ans = 6 >> A(6) %一列一列的开始数 ans = 8

序号(Index)与下标(Subscript )是一一对应的,其相互转换关系也可利用sub2ind和ind2sub函数求得。

>> sub2ind(size(A),2,3) ans= 8 [i,j]=ind2sub(size(A),8) i= 2 j= 3

(2) 使用冒号

可以用冒号表示“直到”以及“所有行”,“所有列”,还可利用一般向量和end运算符来表示矩阵下标,从而获得子矩阵。end表示某一维的末尾元素下

>> B=A (1:2, : ) %逗号前面是行数,表示第一行直到第二行;逗号后面列数,表示所有列 B= 1 2 3 4 5 6 >> C=A([1,3],2:end) %行数:第一行和第三行;列数:第二列直到最后 C = 2 3 8 9

+++

特殊矩阵:

zeros(m,n)生成一个 m 行 n 列的零矩阵,m=n 时可简写为 zeros(n)ones(m,n)生成一个 m 行 n 列的元素全为 1 的矩阵, m=n 时可写为 ones(n)eye(m,n)生成一个主对角线全为 1 的 m 行 n 列矩阵, m=n 时可简写为 eye(n),即为 n 维单位矩阵diag(X)若 X 是矩阵,则 diag(X) 为 X 的主对角线向量 若 X 是向量,diag(X) 产生以 X 为主对角线的对角矩阵tril(A)提取一个矩阵的下三角部分triu(A)提取一个矩阵的上三角部分rand(m,n)产生 0~1 间均匀分布的随机矩阵 m=n 时简写为 rand(n)randn(m,n)产生均值为0,方差为1的标准正态分布随机矩阵 m=n 时简写为 randn(n)

例:

分别建立3×3、3×2和与矩阵A同样大小的零矩阵。

>> zeros(3),zeros(3,2),zeros(size(A))

建立随机矩阵: (1) 在区间[20,50]内均匀分布的5阶随机矩阵。 (2) 均值为0.6、方差为0.1的5阶正态分布随机矩阵。

>> x=20+(50-20)*rand(5) y=0.6+sqrt(0.1)*randn(5) 3.MATLAB运算 3.1基本算术运算

MATLAB的基本算术运算有:+(加)、-(减)、*(乘)、/(右除)、\ (左除)、^(乘方)。

这个就是矩阵的乘法,线性代数知识:m* n的矩阵只有和n *x的矩阵才能相乘得出m *x的矩阵。(老汤别打我,我只记得这个了😥)

3.2点运算

在MATLAB中,有一种特殊的运算,因为其运算符是在有关算术运算符前面加点,所以叫点运算。

点运算符有: 点乘: .* 点除: ./ . 点幂: .^

两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维数相同。

>> A.^2 ans = 1 4 9 16 25 36 49 64 81 符号运算符功 能类别= =等于关系运算符~ =不等于大于=大于等于&逻辑与逻辑运算符|逻辑或~逻辑非

例:

产生5阶随机方阵A,其元素为[10,90]区间的随机整数,然后判断A的元素是否能被3整除。

>> A=fix((90-10+1)*rand(5)+10) %生成5阶随机方阵A P=rem(A,3)==0 %判断结果是一个布尔矩阵

fix()取整;rand生成0~1的随机方阵;rem(A,B)——A/B的余数

image-20200725153512669

建立矩阵A,然后找出大于4的元素的位置。

>> A=[4,-65,-54,0,6;56,0,67,-45,0] find(A>4) %返回的是索引值 image-20200725153651998 3.3矩阵分析

用求逆矩阵的方法解线性方程组。备注:Ax=b其解为:x=A-1b

>> a=[2,-3,1;8,3,2;45,1,-9]; b=[4;2;17]; x=inv(a)*b

用求特征值的方法解方程: 3 x 5 − 7 x 4 + 5 x 2 + 2 x − 18 = 0 3x^5-7x^4+5x^2+2x-18=0 3x5−7x4+5x2+2x−18=0

>> p=[3,-7,0,5,2,-18]; A=compan(p); %友矩阵A,特征值与多项式根一样 x1=eig(A) %求A的特征值 x2=roots(p) %直接求多项式p的零点 4.MATLAB程序设计 4.1M文件

所谓M文件就是由MATLAB语言编写的可在MATLAB语言环境下运行程序源代码文件。

M文件可以根据调用方式的不同分为两类: 命令文件(Script File):自动重复执行的一组MATLAB命令和函数组合,不需输出输入参数。 函数文件(Function File):M文件的第一个可执行以function开始,便是函数文件,每一个函数文件定义一个函数。

例一:分别建立命令文件和函数文件,将华氏温度f转换为摄氏温度c。

命令文件:

clear; %清除工作空间中的变量 f=input('temperature:'); c=5*(f-32)/9

函数文件:

function c=demo2(f) c=5*(f-32)/9;

命令窗口输入:

>> c=f2c_fun(20) c = -6.6667

注意:函数只能调用,不能直接运行,函数调用的一般格式是:[输出实参表]=函数名(输入实参表)实参传递给形参

同时,如果需要测试多个变量,只有函数才能实现。

>> f=[20,73];c=demo2(f) c = -6.6667 22.7778

+++

例二:编写函数文件求半径为r的圆的面积和周长。

编写函数文件:

function [s,p]=demo3(r) %r 圆半径 %s 圆面 %p 圆周长 s=pi*r*r; p=2*pi*r;

我们这里计算半径为2和3的面积和周长,命令行输入:

>> r=[2,3];[s,p]=demo3(r) 错误使用 * 用于矩阵乘法的维度不正确。请检查并确保第一个矩阵中的列数与第二个矩阵中的行数匹配。要执行按元素相乘,请使用 '.*'。 出错 demo3 (line 5) s=pi*r*r;

发现出错,根据提示我们发现需要用点乘才能计算

%s=pi*r*r; s=pi*r.*r; >> r=[2,3];[s,p]=demo3(r) s = 12.5664 28.2743 p = 12.5664 18.8496 4.2输入输出

数据的输入

从键盘输入数据:A=input(‘提示信息’,‘s’);加上‘s’选项,则允许用户输入一个字符串。

>> xm=input('What''s your name?','s'); What's your name?张三 数据的输出

disp(输出项)——其中输出项既可以为字符串,也可以为矩阵。

求一元二次方程ax2 +bx+c=0的根。

>> a=input('a=?'); b=input('b=?'); c=input('c=?'); d=b*b-4*a*c; x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)];%sqrt——平方根 disp(['x1=',num2str(x(1)),',x2=', num2str(x(2))]);%num2str——数字转为字符串 a=?1 b=?3 c=?2 x1=-1,x2=-2 4.3选择结构 4.3.1if语句: image-20200725161842843

例一:

随机变量x = {0,1,2}表示每分钟到达超市收款台的人数,有分布列

xk012pk0.40.30.3

模拟十分钟内顾客到达收款台的状况.

r=rand(1,10);%生成10个0~1随机数,代表每分钟来人的pk for i=1:10 if r(i)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3